package edu.ynu.se.xiecheng.achitectureclass.service;

import edu.ynu.se.xiecheng.achitectureclass.common.service.LogicService;
import edu.ynu.se.xiecheng.achitectureclass.dao.DeviceDao;
import edu.ynu.se.xiecheng.achitectureclass.entity.Device;
import edu.ynu.se.xiecheng.achitectureclass.entity.Greenhouse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Required;

import java.util.List;
import java.util.Optional;

/**
 * 设备管理服务
 * 负责处理设备的基本CRUD操作以及设备与大棚的绑定关系管理
 */
@Service
public class DeviceService extends LogicService<DeviceDao, Device, Long> {
    public DeviceService(DeviceDao deviceDao) {
        super(deviceDao);
    }

    /**
     * 根据ID查找设备
     * @param id 设备ID
     * @return Optional<Device>
     */
    public Optional<Device> findById(Long id) {
        return dao.findById(id);
    }

    /**
     * 绑定设备到指定大棚
     * 建立设备和大棚之间的关联关系，并保存到数据库
     * 
     * @param device 设备信息
     * @param greenhouse 大棚信息
     */
    public void bindDeviceToGreenhouse(Device device, Greenhouse greenhouse) {
        device.setGreenhouse(greenhouse);
        dao.save(device);
    }

    /**
     * 查询指定大棚绑定的所有设备
     * 获取某个大棚下的所有设备列表
     * 
     * @param greenhouseId 大棚ID
     * @return List<Device> 设备列表
     */
    public List<Device> findDevicesByGreenhouse(Long greenhouseId) {
        return dao.findByGreenhouseId(greenhouseId);
    }
}